'\" t
.TH "JOURNALD\&.CONF" "5" "" "systemd 231" "journald.conf"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
journald.conf, journald.conf.d \- 日志服务配置文件
.SH "SYNOPSIS"
.PP
/etc/systemd/journald\&.conf
.PP
/etc/systemd/journald\&.conf\&.d/*\&.conf
.PP
/run/systemd/journald\&.conf\&.d/*\&.conf
.PP
/usr/lib/systemd/journald\&.conf\&.d/*\&.conf
.SH "描述"
.PP
这些文件用于配置系统日志服务
\fBsystemd-journald.service\fR(8)
的行为。
.SH "配置目录及其优先级"
.PP
默认设置是在编译期间确定的， 所以仅在确实需要修改默认设置的情况下， 才需要使用配置文件。位于
/etc/systemd/
目录中的初始配置文件， 仅包含了展示选项默认值的注释， 目的在于方便系统管理员查看和直接修改。
.PP
如果软件包想要自定义某些默认设置， 那么必须将自定义的配置文件安装到
/usr/lib/systemd/*\&.conf\&.d/
目录中。
/etc/
目录仅供系统管理员使用。 系统管理员可以利用下面的逻辑来覆盖默认设置： 主配置文件最先被读取， 优先级也最低。 所有
*\&.conf\&.d/
中的配置文件 都会覆盖主配置文件中的设置。 所有
*\&.conf\&.d/
中的配置文件(无论位于哪个目录中)， 统一按照文件名的字典顺序处理。 如果在多个配置文件中设置了同一个选项， 那么仅以文件名最靠后(字典顺序)的那一个为准。 为了便于排序， 建议给所有
*\&.conf\&.d/
中的配置文件 都加上两位十进制数字的文件名前缀。
.PP
如果系统管理员想要屏蔽
/usr/lib/
目录中的某个配置文件， 那么最佳做法是在
/etc/
目录中 创建一个指向
/dev/null
的同名符号链接， 即可彻底屏蔽
/usr/lib/
目录中的同名文件。
.SH "选项"
.PP
所有选项都位于
"[Journal]"
小节：
.PP
\fIStorage=\fR
.RS 4
在哪里存储日志文件：
"volatile"
表示仅保存在内存中， 也就是仅保存在
/run/log/journal
目录中(将会被自动按需创建)。
"persistent"
表示优先保存在磁盘上， 也就优先保存在
/var/log/journal
目录中(将会被自动按需创建)， 但若失败(例如在系统启动早期"/var"尚未挂载)， 则转而保存在
/run/log/journal
目录中(将会被自动按需创建)。
"auto"(默认值) 与
"persistent"
类似， 但不自动创建
/var/log/journal
目录， 因此可以根据该目录的存在与否决定日志的保存位置。
"none"
表示不保存任何日志(直接丢弃所有收集到的日志)， 但日志转发(见下文)不受影响。 默认值是
"auto"
.RE
.PP
\fICompress=\fR
.RS 4
默认值"yes"表示： 压缩存储大于特定阈值的对象。
.RE
.PP
\fISeal=\fR
.RS 4
默认值"yes"表示：如果存在一个"sealing key"(由
\fBjournalctl\fR(1)
的
\fB\-\-setup\-keys\fR
命令创建)， 那么就为所有持久保存的日志文件启用 FSS(\m[blue]\fBSeekable Sequential Key Generators\fR\m[]\&\s-2\u[1]\d\s+2)保护， 以避免日志文件被恶意或无意的修改。
.RE
.PP
\fISplitMode=\fR
.RS 4
设置如何按用户分割日志文件，以实现不同的访问控制策略(日志守护进程会确保每个用户都能读取自己的日志文件)。 注意，仅分割持久保存的日志(/var/log/journal)，永不分割内存中的日志(/run/log/journal)。 可以使用的分割策略如下：
"uid"
表示每个用户都有自己专属的日志文件(无论该用户是否拥有登录会话)， 但系统用户的日志依然记录到系统日志中。这是默认值。

"none"
表示不对日志文件进行分割，而是将所有日志都记录到系统日志中。 这意味着非特权用户根本无法读取属于自己的日志信息。
.RE
.PP
\fIRateLimitIntervalSec=\fR, \fIRateLimitBurst=\fR
.RS 4
用于限制日志的生成速度(设为零表示不作限制)。
\fIRateLimitIntervalSec=\fR
用于设置一个时间段长度，默认值是30秒。
\fIRateLimitBurst=\fR
用于设置一个正整数，表示消息条数，默认值是1000条。 表示在
\fIRateLimitIntervalSec=\fR
时间段内， 每个服务最多允许产生
\fIRateLimitBurst=\fR
数量(条数)的日志。 在同一个时间段内，超出数量限制的日志将被丢弃，直到下一个时间段才能再次开始记录。 对于所有被丢弃的日志消息，仅用一条类似"xxx条消息被丢弃"的消息来代替。 这个限制是针对每个服务的限制，一个服务超限并不会影响到另一个服务的日志记录。
\fIRateLimitIntervalSec=\fR
可以使用下面的时间单位："ms",
"s",
"min",
"h",
"d"
.RE
.PP
\fISystemMaxUse=\fR, \fISystemKeepFree=\fR, \fISystemMaxFileSize=\fR, \fISystemMaxFiles=\fR, \fIRuntimeMaxUse=\fR, \fIRuntimeKeepFree=\fR, \fIRuntimeMaxFileSize=\fR, \fIRuntimeMaxFiles=\fR
.RS 4
限制日志文件的大小上限。 以
"System"
开头的选项用于限制磁盘使用量， 也就是
/var/log/journal
的使用量。 以
"Runtime"
开头的选项用于限制内存使用量， 也就是
/run/log/journal
的使用量。 以
"System"
开头的选项仅在
/var/log/journal
目录确实存在且可写时才有意义。 但以
"Runtime"
开头的选项永远有意义。 也就是说， 在系统启动早期
/var
尚未挂载时、 或者系统管理员禁止在磁盘上存储日志的时候， 仅有
"Runtime"
开头的选项有意义。
\fBjournalctl\fR
与
\fBsystemd\-journald\fR
工具会忽略日志目录中 所有后缀名不等于
"\&.journal"
或
"\&.journal~"
的文件。 换句话说， 日志目录中不应该存在后缀名不等于
"\&.journal"
或
"\&.journal~"
的文件， 因为这些文件永远不会被清理。
.sp
\fISystemMaxUse=\fR
与
\fIRuntimeMaxUse=\fR
限制全部日志文件加在一起最多可以占用多少空间。
\fISystemKeepFree=\fR
与
\fIRuntimeKeepFree=\fR
表示除日志文件之外，至少保留多少空间给其他用途。
\fBsystemd\-journald\fR
会同时考虑这两个因素， 并且尽量限制日志文件的总大小，以同时满足这两个限制。
.sp
\fISystemMaxUse=\fR
与
\fIRuntimeMaxUse=\fR
的默认值是10%空间与4G空间两者中的较小者；
\fISystemKeepFree=\fR
与
\fIRuntimeKeepFree=\fR
的默认值是15%空间与4G空间两者中的较大者； 如果在 systemd\-journald 启动时， 文件系统即将被填满并且已经超越了
\fISystemKeepFree=\fR
或
\fIRuntimeKeepFree=\fR
的限制，那么日志记录将被暂停。 也就是说，如果在创建日志文件时，文件系统有充足的空闲空间， 但是后来文件系统被其他非日志文件过多占用， 那么 systemd\-journald 只会立即暂停日志记录， 但不会删除已经存在的日志文件。
.sp
\fISystemMaxFileSize=\fR
与
\fIRuntimeMaxFileSize=\fR
限制单个日志文件的最大体积， 到达此限制后日志文件将会自动滚动。 默认值是对应的
\fISystemMaxUse=\fR
与
\fIRuntimeMaxUse=\fR
值的1/8 ， 这也意味着日志滚动默认保留7个历史文件。
.sp
日志大小的值可以使用以1024为基数的 K, M, G, T, P, E 后缀， 分别对应于 1024, 1024\(S2, \&.\&.\&. 字节。
.sp
\fISystemMaxFiles=\fR
与
\fIRuntimeMaxFiles=\fR
限制最多允许同时存在多少个日志文件， 超出此限制后， 最老的日志文件将被删除， 而当前的活动日志文件则不受影响。 默认值为100个。
.RE
.PP
\fIMaxFileSec=\fR
.RS 4
日志滚动的时间间隔。 通常并不需要使用基于时间的日志滚动策略， 因为由
\fISystemMaxFileSize=\fR
与
\fIRuntimeMaxFileSize=\fR
控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。 默认值是一个月， 设为零表示禁用基于时间的日志滚动策略。 可以使用
"year",
"month",
"week",
"day",
"h",
"m"
时间后缀， 若不使用后缀则表示以秒为单位。
.RE
.PP
\fIMaxRetentionSec=\fR
.RS 4
日志文件的最大保留期限。 当日志文件的最后修改时间超过此期限后将被删除。 默认值零表示不使用基于时间的日志删除策略。 通常并不需要使用基于时间的日志删除策略，因为由
\fISystemMaxUse=\fR
与
\fIRuntimeMaxUse=\fR
控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。 可以使用
"year",
"month",
"week",
"day",
"h",
"m"
时间后缀， 若不使用后缀则表示以秒为单位。
.RE
.PP
\fISyncIntervalSec=\fR
.RS 4
向磁盘刷写日志文件的时间间隔，默认值是五分钟。 刷写之后，日志文件将会处于离线(OFFLINE)状态。 注意，当接收到 CRIT, ALERT, EMERG 级别的日志消息后， 将会无条件的立即刷写日志文件。 因此该设置仅对 ERR, WARNING, NOTICE, INFO, DEBUG 级别的日志消息有意义。
.RE
.PP
\fIForwardToSyslog=\fR, \fIForwardToKMsg=\fR, \fIForwardToConsole=\fR, \fIForwardToWall=\fR
.RS 4
\fIForwardToSyslog=\fR
表示是否将接收到的日志消息转发给传统的
\m[blue]\fBsyslog\fR\m[]\&\s-2\u[2]\d\s+2
守护进程，默认值为"no"。 如果设为"yes"，但是没有任何进程监听对应的套接字，那么这种转发是无意义的。 此选项可以被内核引导选项
"systemd\&.journald\&.forward_to_syslog="
覆盖。
\fIForwardToKMsg=\fR
表示是否将接收到的日志消息转发给内核日志缓冲区(kmsg)，默认值为"no"。 此选项可以被内核引导选项
"systemd\&.journald\&.forward_to_kmsg="
覆盖。
\fIForwardToConsole=\fR
表示是否将接收到的日志消息转发给系统控制台，默认值为"no"。 如果设为"yes"，那么可以通过下面的
\fITTYPath=\fR
指定转发目标。 此选项可以被内核引导选项
"systemd\&.journald\&.forward_to_console="
覆盖。
\fIForwardToWall=\fR
表示是否将接收到的日志消息作为警告信息发送给所有已登录用户，默认值为"yes"。 此选项可以被内核引导选项
"systemd\&.journald\&.forward_to_wall="
覆盖。
.RE
.PP
\fIMaxLevelStore=\fR, \fIMaxLevelSyslog=\fR, \fIMaxLevelKMsg=\fR, \fIMaxLevelConsole=\fR, \fIMaxLevelWall=\fR
.RS 4
\fIMaxLevelStore=\fR
设置记录到日志文件中的最高日志等级，默认值为"debug"；
\fIMaxLevelSyslog=\fR
设置转发给传统的
\m[blue]\fBsyslog\fR\m[]\&\s-2\u[2]\d\s+2
守护进程的最高日志等级，默认值为"debug"；
\fIMaxLevelKMsg=\fR
设置转发给内核日志缓冲区(kmsg)的最高日志等级，默认值为"notice"；
\fIMaxLevelConsole=\fR
设置转发给系统控制台的最高日志等级，默认值为"info"；
\fIMaxLevelWall=\fR
设置作为警告信息发送给所有已登录用户的最高日志等级，默认值为"emerg"； 这些选项既可以设为日志等级的名称， 也可以设为日志等级对应的数字：
"emerg"(0),
"alert"(1),
"crit"(2),
"err"(3),
"warning"(4),
"notice"(5),
"info"(6),
"debug"(7) 。 所有高于设定等级的日志消息都将被直接丢弃， 仅保存/转发小于等于设定等级的日志消息。
.RE
.PP
\fITTYPath=\fR
.RS 4
指定
\fIForwardToConsole=yes\fR
时所使用的控制台TTY， 默认值是
/dev/console
.RE
.SH "日志转发"
.PP
有两种不同的日志转发方法： (1)通过套接字文件(/run/systemd/journal/syslog) 可以将收集到的日志消息 立即转发给套接字的监听进程(传统的
\m[blue]\fBsyslog\fR\m[]\&\s-2\u[2]\d\s+2
守护进程)。 此方法受
\fIForwardToSyslog=\fR
指令的控制。 (2)日志接收进程作为客户端运行，就像
\fBjournalctl\fR(1)
一样读取日志文件。 因此，此方法在
\fIStorage=none\fR
时无效。 此方法不能实时读取日志消息， 但是可以读取先前保存的日志消息(例如在系统启动完成之后读取系统启动早期的日志消息)。 此方法还可以读取到完整的日志元数据。 此方法一般无法读取当前最新的日志消息， 只能读取已经被记录到文件系统上的日志消息。 注意，\m[blue]\fBsyslog\fR\m[]\&\s-2\u[2]\d\s+2
守护进程通常使用此方法(而不是前一种方法)， 因此
\fIStorage=\fR
选项(而不是
\fIForwardToSyslog=\fR
选项) 不应该设为"none"。
.SH "参见"
.PP
\fBsystemd\fR(1),
\fBsystemd-journald.service\fR(8),
\fBjournalctl\fR(1),
\fBsystemd.journal-fields\fR(7),
\fBsystemd-system.conf\fR(5)
.SH "NOTES"
.IP " 1." 4
Seekable Sequential Key Generators
.RS 4
\%https://eprint.iacr.org/2013/397
.RE
.IP " 2." 4
syslog
.RS 4
\%//linux/sysklogd.html
.RE
.\" manpages-zh translator: 金步国
.\" manpages-zh comment: 金步国作品集：http://www.jinbuguo.com
